#define _CRT_SECURE_NO_WARNINGS





////自动修正ac
//#include<stdio.h>
//int main()
//{
//    char ch[100];
//    scanf("%s", ch);
//    int i = 0;
//    while (ch[i] != '\0')
//    {
//        if (ch[i] >= 'a' && ch[i] <= 'z')
//            ch[i] -= 32;
//        i++;
//    }
//    printf("%s", ch);
//    return 0;
//}

////凯撒密码ac
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	char ch[100];
//	scanf("%s", ch);
//	int len = strlen(ch);
//	for (int i = 0; i < len; i++)
//	{
//		int m = ch[i] - 96 + n;
//		if (m % 26 == 0)
//			printf("z");
//		else
//		{
//			m = m % 26 + 96;
//			printf("%c", m);
//		}
//	}
//	return 0;
//}

//标题统计ac
//#include<stdio.h>
//int main()
//{
//	char s[5] = "abc";
//	scanf("%s", s);
//	printf("%s", s);
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char s[10] = { 0 };
//	gets(s);
//	int count = 0;
//	int sz = strlen(s);
//	for (int i = 0; i < sz; i++)
//	{
//		if (s[i] != ' ')
//			count++;
//	}
//	printf("%d", count);
//
//	return 0;
//}

//手机ac
//#include<stdio.h>
//int main()
//{
//	char s[250] = { 0 };
//	gets(s);
//	int len = strlen(s);
//	int count = 0;
//	for (int i = 0; i < len; i++)
//	{
//		if (s[i] == 'a' || s[i] == 'd' || s[i] == 'g' || s[i] == 'j' || s[i] == 'm' || s[i] == 'p' || s[i] == 't' || s[i] == 'w')
//			count++;
//		else if (s[i] == 'b' || s[i] == 'e' || s[i] == 'h' || s[i] == 'k' || s[i] == 'n' || s[i] == 'q' || s[i] == 'u' || s[i] == 'x')
//			count += 2;
//		else if (s[i] == 'c' || s[i] == 'f' || s[i] == 'i' || s[i] == 'l' || s[i] == 'o' || s[i] == 'r' || s[i] == 'v' || s[i] == 'y')
//			count += 3;
//		else if (s[i] == 's' || s[i] == 'z')
//			count += 4;
//		else if (s[i] == ' ')
//			count++;
//	}
//	printf("%d", count);
//	return 0;
//}

////小果的键盘ac
//#include<stdio.h>
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	char ch[200] = { 0 };
//	int count = 0;
//	scanf("%s", ch);
//	for (int i = 0; i < n; i++)
//	{
//		if (ch[i] == 'V')
//		{
//			if (ch[i + 1] == 'K')
//				count++;
//		}
//		
//	}
//	for (int i = 0; i < n; i++)
//	{
//		if (ch[i] == 'V' && ch[i + 1] == 'V')
//		{
//			if (ch[i + 2] == 'K')
//				continue;
//			count++;
//			break;
//		}
//		if (ch[i] == 'K' && ch[i + 1] == 'K')
//		{
//			if (ch[i - 1] == 'V')
//				continue;
//			count++;
//			break;
//		}
//	}
//	printf("%d", count);
//	return 0;
//}
//VVK vkkvk
//33 
//VKVKVKVKVKVKVKVKVKVKVVKVKVKVKVKVK

//单词覆盖还原ac
//boy->b o y bo oy  boy
//     1 1 1    1  1    1
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char ch[300] = { 0 };
//	scanf("%s", ch);
//	int len = strlen(ch);
//	int boy = 0;
//	int girl = 0;
//	//boy
//	for (int i = 0; i < len; i++)
//	{
//		if (ch[i] == 'b')
//		{
//			if (ch[i + 1] == 'o')
//			{
//				if (ch[i + 2] == 'y')//boy
//					boy++;
//				else//bo
//					boy++;
//			}
//			else//b
//				boy++;
//		}
//		else
//		{
//			if (ch[i + 1] == 'o')
//			{
//				if (ch[i + 2] == 'y')//oy
//					boy++;
//				else //o
//					boy++;
//			}
//			else
//			{
//				if (ch[i + 2] == 'y')
//					boy++;
//			}
//		}
//	}
//	//girl
//	//g i r l gi ir rl gir irl girl
//	//1 1 1 1  1  1  1   1  1    1
//	for (int i = 0; i < len; i++)
//	{
//		if (ch[i] == 'g')
//		{
//			if (ch[i + 1] == 'i')
//			{
//				if (ch[i + 2] == 'r')
//				{
//					if (ch[i + 3] == 'l')//girl
//						girl++;
//					else//gir
//						girl++;
//				}
//				else//gi
//					girl++;
//			}
//			else//g
//				girl++;
//		}
//		else
//		{
//			if (ch[i + 1] == 'i')
//			{
//				if (ch[i + 2] == 'r')
//				{
//					if (ch[i + 3] == 'l')//irl
//						girl++;
//					else//ir
//						girl++;
//				}
//				else//i
//					girl++;
//					
//			}
//			else
//			{
//				if (ch[i + 2] == 'r')
//				{
//					if (ch[i + 3] == 'l')//rl
//						girl++;
//					else//r
//						girl++;
//				}
//				else
//				{
//					if (ch[i + 3] == 'l')//l
//						girl++;
//
//				}
//			}
//		}
//	}
//	printf("%d\n%d", boy, girl);
//	return 0;
//}

//你的飞碟在这儿ac
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//
//	/*char ch = 'A';
//	printf("%d", ch);*/
//	//A的ASCII是65
//	char star[10] = { 0 };
//	char group[10] = { 0 };
//	scanf("%s%s", star, group);
//	int len_star = strlen(star);
//	int len_group = strlen(group);
//	int num_star = 1;
//	int num_group = 1;
//	//彗星的
//
//	for (int i = 0; i < len_star; i++)
//	{
//		int m = star[i] - 64;
//		num_star *= m;
//	}
//	//小组的
//	for (int i = 0; i < len_group; i++)
//	{
//		int m = group[i] - 64;
//		num_group *= m;
//	}
//	int mod_star = num_star % 47;
//	int mod_group = num_group % 47;
//	if (mod_star == mod_group)
//		printf("GO");
//	else
//		printf("STAY");
//	return 0;
//
//}


////文字处理软件ac
//#include<stdio.h>
//#include<math.h>
//int main()
//{
//	int q = 0;
//	scanf("%d", &q);
//	char str[150] = { 0 };
//	char in[50] = { 0 };
//	int a, b;
//	int str1[100] = { 0 };
//	int str2[100] = { 0 };
//	int m = 0;
//	int n = 0;
//	int h = 0;
//	scanf(" %s", str);
//	for (int i = 1; i <= q; i++)
//	{
//		int num;
//		scanf("%d", &num);
//		if (num == 1)
//		{
//			scanf("%s", in);
//			strcat(str, in);
//			printf("%s\n", str);
//		}
//		else if (num == 2)
//		{
//			scanf("%d %d", &a, &b);
//			for (int i = a; i <= b+a; i++)
//			{
//				str[m] = str[i];
//				m++;
//			}
//			printf("%s\n", str);
//		}
//		else if (num == 3)
//		{
//			scanf("%d %s", &a, in);
//			for (int i = a; i <= m; i++)
//			{
//				str1[n] = str[i];
//				n++;
//			}
//			strcat(in, str1);
//			for (int i = 0; i < a; i++)
//			{
//				str2[h] = str[i];
//				h++;
//			}
//			strcat(str2, in);
//			printf("%s\n", str2);
//		}
//		else if (num == 4)
//		{
//			scanf("%s", in);
//			char* ret = strstr(str, in);
//			int cc = ret != NULL ? (int)(ret - str) : -1;
//			//返回的指针和首地址做差
//
//			printf("%d\n", cc);
//		}
//	}
//	return 0;
//}

//语句解析ac
//#include<stdio.h>
//int main()
//{
//	char s[260] = { 0 };
//	int ans[150] = { 0 };//将abc存在数组里面
//	gets(s);
//	int i = 0;
//	while (s[i] != '\0')
//	{
//		if (i-1>=0&&s[i] == ':' && s[i + 1] == '=' && s[i + 3] == ';')
//		{
//			if ( s[i + 2] >= '0' && s[i + 2] <= '9')
//				ans[s[i-1]] = s[i + 2] - 48;
//			else if (s[i + 2] >= 'a' && s[i + 2] <= 'c')
//				ans[s[i-1]] = ans[s[i + 2]];
//		}
//		i++;
//	}
//	printf("%d %d %d", ans['a'], ans['b'], ans['c']);
//	return 0;
//}



////数字反转ac
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	//用字符串输入 判断数的类型
//	char s[100] = { 0 };
//	scanf("%s", s);
//	int len = strlen(s);
//	int i = 0;
//	while (i < len)
//	{
//		if (s[i]=='.')//是小数 并且小数是第i位（实际上是 i+1 位）
//		{
//
//		}
//		i++;
//
//	}
//	return 0;
//}
////2 5 0
////04 25 0 



//p1308 统计单词数 ac
//#include<stdio.h>
//#include<string.h>
//void shift(char* s)
//{
//	int i = 0;
//	int len = strlen(s);
//	for (int i = 0; i < len; i++)
//	{
//		if (s[i] >= 'A' && s[i] <= 'Z')
//		{
//			s[i] = s[i] + 'a' - 'A';
//		}
//	}
//}
//int main() {
//	char in[15];
//	char str[1000005];
//	gets(in);
//	gets(str);
//	shift(in);//都转化为小写
//	shift(str);
//	int i = 0; int j = 0;
//	int count = 0;//记录单词的个数
//	int len = strlen(str);
//	int start;
//	int len_ = strlen(in);
//	for (i = 0; i < len; i++)
//	{
//		j = 0;
//		while (str[i] == in[j])
//		{
//			i++;
//			j++;
//			if (str[i] == '\0' && j < len_)
//				break;
//			else if ((in[j] == '\0') && str[i] == ' ' || str[i] == '\0')
//			{
//				if (str[i - len_ -1] == ' '||(i-len_==0))
//				{
//					count++;
//					if (count == 1)//记录第一次出现的位置
//					{
//						start = i - len_;
//					}
//					break;
//				}
//				
//			}
//			
//		}
//	}
//	//td
//	//td t
//	if (count > 0)
//		printf("%d %d", count, start);
//	else
//		printf("%d", -1);
//
//	return 0;
//}
//


////P1125笨小猴 ac
//#include<stdio.h>
//#include<string.h>
//#include<math.h>
//int is_sushu(int n) {
//	if (n == 0||n==1)
//		return 0;
//	if (n == 2)
//		return 1;
//	for (int i = 2; i < sqrt(n); i++) {
//		if (n % i == 0)
//			return 0;
//	}
//	return 1;
//}
//int main() {
//	int max = 0;
//	int min = 110;
//	char s[110];
//	scanf("%s", s);
//	int count[26] = { 0 };
//	int len = strlen(s);
//	for (int i = 0; i < len; i++) {
//		count[s[i] - 'a']++;
//	}
//	for (int i = 0; i < 26; i++) {
//		if (count[i] > max)
//			max = count[i];
//		if (count[i] < min&&count[i]>0)
//			min = count[i];
//	}
//	int rel = max - min;
//	if (is_sushu(rel))
//		printf("Lucky Word\n%d", rel);
//	else
//		printf("No Answer\n0");
//	return 0;
//}



//数字反转（升级版） p1553 ac
//#include<stdio.h>
//#include<string.h>
//void* zhengshu(char* s,int len) {//是整数
//	if (len > 1) {
//		while (s[len - 1] == '0') {
//			len--;
//		}
//	}
//	s[len] = '\0';
//	int left = 0;
//	int right = len - 1;
//	while (left < right) {
//		char ch = s[left];
//		s[left] = s[right];
//		s[right] = ch;
//		left++;
//		right--;
//	}
//}
//void* baifenshu(char* s, int len) {
//	len--;
//	if (len > 1) {
//		while (s[len - 1] == '0') {
//			len--;//如果有一个零 不算零的纯数字有len个
//		}
//	}
//	zhengshu(s, len);
//	s[len] = '%';
//	s[len + 1] = '\0';
//}
//int main() {
//	char s[20];
//	scanf("%s", s);
//	int len = strlen(s);
//	for (int i = 0; i < len; i++) {
//		if (s[i]=='%') {//百分数
//			baifenshu(s, len);
//			printf("%s", s);
//			return 0;
//		}
//		else if (s[i] == '/') {//分数
//			char zheng[20];
//			char xiao[20];
//			int i = 0;
//			int j = 0;
//			int k = 0;
//			for (i = 0; s[i] != '/'; i++) {
//				zheng[i] = s[i];
//			}
//			zheng[i] = '\0';
//			zhengshu(zheng, i);
//			for (j = i + 1; s[j] != '\0'; j++) {
//				xiao[k] = s[j];
//				k++;
//			}
//			xiao[k] = '\0';
//			zhengshu(xiao, k);
//			s[i] = '/';
//			printf("%s/%s", zheng, xiao);
//			return 0;
//		}
//		else if (s[i] == '.')//小数
//		{
//			char zheng[20];
//			char xiao[20];
//			int i = 0;
//			int j = 0;
//			int k = 0;
//			for (i = 0; s[i] != '.'; i++) {
//				zheng[i] = s[i];
//			}
//			zheng[i] = '\0';
//			zhengshu(zheng, i);
//			while (s[i + 1] == '0') {
//				i++;
//			}
//			for (j = i + 1; s[j] != '\0'; j++) {
//				xiao[k] = s[j];
//				k++;
//			}
//			xiao[k] = '\0';
//			zhengshu(xiao, k);
//			if (k == 0)
//				printf("%s.0", zheng);
//			else 
//	     		printf("%s.%s", zheng, xiao);
//			return 0;
//		}
//	}
//	zhengshu(s, len);
//	printf("%s", s);
//	return 0;
//}
//
////输入1390000.0


////P1603 斯诺登的密码ac
//下面两个都是ac 只有输出方式不一样

//#include<stdio.h>
//
//#include<string.h>
//
//int cmp(const void* x, const void* y) {
//    return *(int*)x - *(int*)y;
//}
//
//int main() {
//    char ch[21];
//    int a[7];
//    int cnt=0;
//    unsigned long long ans = 0;
//    for (int i = 1; i <= 6; i++) {
//        scanf("%s", ch);
//        if (!strcmp(ch, "one") || (!strcmp(ch, "a")) || (!strcmp(ch, "another")) || (!strcmp(ch, "first"))) {
//            a[cnt] = 1;
//            cnt++;
//            continue;
//        }
//        if ((!strcmp(ch, "two")) || (!strcmp(ch, "both")) || (!strcmp(ch, "second"))) {
//            a[cnt] = 4;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "three") || !strcmp(ch, "third")) {
//            a[cnt] = 9;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "four")) {
//            a[cnt] = 16;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "five")) {
//            a[cnt] = 25;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "six")) {
//            a[cnt] = 36;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "seven")) {
//            a[cnt] = 49;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "eight")) {
//            a[cnt] = 64;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "nine")) {
//            a[cnt] = 81;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "ten")) {
//            a[cnt] = 0;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "eleven")) {
//            a[cnt] = 21;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "twelve")) {
//            a[cnt] = 44;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "thirteen")) {
//            a[cnt] = 69;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "fourteen")) {
//            a[cnt] = 96;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "fifteen")) {
//            a[cnt] = 25;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "sixteen")) {
//            a[cnt] = 56;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "seventeen")) {
//            a[cnt] = 89;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "eighteen")) {
//            a[cnt] = 24;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "ninteen")) {
//            a[cnt] = 61;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "twenty")) {
//            a[cnt] = 0;
//            cnt++;
//            continue;
//        }
//    }
//    scanf("%s", ch);//读取“.”
//    qsort(a, cnt, sizeof(int),cmp);
//    for (int i = 0; i < cnt; i++) {
//        ans = ans * 100 + a[i];
//    }
//    printf("%lld", ans);
//    return 0;
//}


//
//#include<stdio.h>
//
//#include<string.h>
//
//int cmp(const void* x, const void* y) {
//    return *(int*)x - *(int*)y;
//}
//
//int main() {
//    char ch[21];
//    int a[7];
//    int cnt = 0;
//    unsigned long long ans = 0;
//    for (int i = 1; i <= 6; i++) {
//        scanf("%s", ch);
//        if (!strcmp(ch, "one") || (!strcmp(ch, "a")) || (!strcmp(ch, "another")) || (!strcmp(ch, "first"))) {
//            a[cnt] = 1;
//            cnt++;
//            continue;
//        }
//        if ((!strcmp(ch, "two")) || (!strcmp(ch, "both")) || (!strcmp(ch, "second"))) {
//            a[cnt] = 4;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "three") || !strcmp(ch, "third")) {
//            a[cnt] = 9;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "four")) {
//            a[cnt] = 16;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "five")) {
//            a[cnt] = 25;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "six")) {
//            a[cnt] = 36;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "seven")) {
//            a[cnt] = 49;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "eight")) {
//            a[cnt] = 64;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "nine")) {
//            a[cnt] = 81;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "ten")) {
//            a[cnt] = 0;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "eleven")) {
//            a[cnt] = 21;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "twelve")) {
//            a[cnt] = 44;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "thirteen")) {
//            a[cnt] = 69;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "fourteen")) {
//            a[cnt] = 96;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "fifteen")) {
//            a[cnt] = 25;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "sixteen")) {
//            a[cnt] = 56;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "seventeen")) {
//            a[cnt] = 89;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "eighteen")) {
//            a[cnt] = 24;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "ninteen")) {
//            a[cnt] = 61;
//            cnt++;
//            continue;
//        }
//        if (!strcmp(ch, "twenty")) {
//            a[cnt] = 0;
//            cnt++;
//            continue;
//        }
//    }
//    scanf("%s", ch);//读取“.”
//    qsort(a, cnt, sizeof(int), cmp);
//    printf("%d", a[0]);
//    for (int i = 1; i < cnt; i++) {
//        printf("%.2d", a[i]);
//
//    }
//    return 0;
//}
//P1598 垂直柱状图ac

#include<stdio.h>

#include<string.h>

int cmp(const void* x, const void* y) {
	return *(int*)x - *(int*)y;
}
int main() {
	char ch[4][110];
	int arr[26] = { 0 };
	char print[405][30] = { ' ' };
	int max = -1;
	for (int i = 0; i < 4; i++)//每一行
	{
		gets(ch[i]);
		int len = strlen(ch[i]);//计算每一行的长度
		for (int j = 0; j < len; j++) {//每一行 统计字符
			if (ch[i][j] >= 'A' && ch[i][j] <= 'Z')
				arr[ch[i][j] - 'A']++;//每一个字符的下标存放在数组 这个字符出现次数
		}
	}
	for (int i = 0; i < 26; i++) {
		if (arr[i] > max)
			max = arr[i];//计算出现次数最多的字母 打印出的行数即为max+1 字母最多行是max
	}//每一个字母有 arr【i】行  星号
	for (int i = 0; i < 26; i++) {//每一列
		for (int j = max - 1; j >= max - arr[i]; j--) {//每一行
			print[j][i] = '*';
		}
		print[max][i] = i + 'A';
	}
	for (int i = 0; i < max + 1; i++) {
		for (int j = 0; j < 26; j++) {
			if (print[i][j] == '*' || print[i][j] >= 'A' && print[i][j] <= 'Z') {
				if (j < 25)
					printf("%c ", print[i][j]);
				else
					printf("%c", print[i][j]);
			}
			else
				printf("  ");
		}
		if (i < max + 1)
			printf("\n");
	}
	return 0;
}